// controller/user.js
'use strict';

const Controller = require('egg').Controller;

class UserController extends Controller {
    async index() {
        const {ctx} = this;
        ctx.body = 'hi, egg';
    }

    async user() {
        const {ctx} = this;
        const result = await ctx.service.user.user();
        ctx.body = result
    }

    async addUser() {
        const {ctx} = this;
        const {name} = ctx.request.body
        try {
            // 将数据给service层处理 ctx.service.user.addUser
            const result = await ctx.service.user.addUser(name);
            ctx.body = {
                code: 200,
                msg: '添加成功',
                data: null,
            }
            return result
        } catch (error) {
            ctx.body = {
                code: 500,
                msg: '添加失败',
                data: null
            }
        }
    }

    // 编辑
    async editUser() {
        const {ctx} = this;
        const {id, name} = ctx.request.body;
        try {
            const result = await ctx.service.user.editUser(id, name);
            ctx.body = {
                code: 200,
                msg: '修改成功',
                data: null
            }
            return result
        } catch (error) {
            ctx.body = {
                code: 500,
                msg: '修改失败',
                data: null
            }
        }
    }

    // 编辑
    async deleteUser() {
        const {ctx} = this;
        const {id} = ctx.request.body;
        try {
            const result = await ctx.service.user.deleteUser(id);
            ctx.body = {
                code: 200,
                msg: '删除成功',
                data: null
            }
            return result
        } catch (error) {
            ctx.body = {
                code: 500,
                msg: '删除失败',
                data: null
            }
        }
    }

    async register() {
        const {ctx} = this;
        const {username, password} = ctx.request.body; // 获取注册需要的参数
        // 判空操作
        if (!username || !password) {
            ctx.body = {
                code: 500,
                msg: '账号密码不能为空',
                data: null
            }
            return
        }
        // 验证数据库内是否已经有该账户名
        const userInfo = await ctx.service.user.getUserByName(username) // 获取用户信息

        // 判断是否已经存在
        if (userInfo && userInfo.id) {
            ctx.body = {
                code: 500,
                msg: '账户名已被注册，请重新输入',
                data: null
            }
            return
        }
        // 默认头像，放在 user.js 的最外，部避免重复声明。
        const defaultAvatar = 'http://s.yezgea02.com/1615973940679/WeChat77d6d2ac093e247c361f0b8a7aeb6c2a.png'
        // 调用 service 方法，将数据存入数据库。
        const result = await ctx.service.user.register({
            username,
            password,
            signature: '世界和平。',
            avatar: defaultAvatar
        });

        if (result) {
            ctx.body = {
                code: 200,
                msg: '注册成功',
                data: null
            }
        } else {
            ctx.body = {
                code: 500,
                msg: '注册失败',
                data: null
            }
        }
    }
}

module.exports = UserController;